Apex এবং Visualforce Integration হলো Salesforce প্ল্যাটফর্মে Apex ব্যাকএন্ড লজিক এবং Visualforce ফ্রন্টএন্ড ইন্টারফেসের সংযোগ স্থাপন করার একটি পদ্ধতি। Visualforce পেজ ব্যবহারকারীর ইন্টারফেস প্রদান করে, যেখানে Apex ক্লাস থেকে ডেটা প্রক্রিয়াকরণ এবং লজিক এক্সিকিউট করা যায়। এই ইন্টিগ্রেশনের মাধ্যমে উন্নত ইউজার ইন্টারফেস তৈরি করা এবং ব্যাকএন্ডে জটিল লজিক ব্যবহার করে ফ্রন্টএন্ডে ডেটা প্রদর্শন করা সম্ভব হয়।
Standard Controller Visualforce পেজে স্ট্যান্ডার্ড অবজেক্টের জন্য ডিফল্ট কার্যক্ষমতা প্রদান করে। এটি প্রাথমিকভাবে recordId
প্যারামিটার ব্যবহার করে কাজ করে এবং ব্যাকএন্ড লজিকের জন্য অতিরিক্ত Apex ক্লাসের প্রয়োজন হয় না।
<apex:page standardController="Account">
<h1>Account Details</h1>
<p>Account Name: {!Account.Name}</p>
<p>Industry: {!Account.Industry}</p>
</apex:page>
Custom Controller একটি কাস্টম Apex ক্লাস ব্যবহার করে Visualforce পেজে ডেটা প্রসেসিং এবং প্রদর্শন করা যায়। Custom Controller ব্যবহার করে বিভিন্ন ডেটা ফিল্টারিং, প্রক্রিয়াকরণ এবং বিশেষ লজিক প্রয়োগ করা যায়।
Custom Controller (Apex Class)
public class AccountController {
public Account acc { get; set; }
public AccountController() {
acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
}
public void updateIndustry() {
acc.Industry = 'Technology';
update acc;
}
}
Visualforce Page
<apex:page controller="AccountController">
<h1>Account Details</h1>
<p>Account Name: {!acc.Name}</p>
<p>Industry: {!acc.Industry}</p>
<apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
Update Industry
বাটন ক্লিক করলে Industry
ফিল্ড আপডেট হবে এবং Visualforce পেজে দেখা যাবে।Controller Extension হলো Standard Controller-এর সাথে কাস্টম লজিক যুক্ত করার একটি পদ্ধতি। Controller Extension ব্যবহার করে Standard Controller-এর কার্যক্ষমতা বাড়ানো যায়।
Controller Extension (Apex Class)
public class AccountControllerExtension {
private final Account acc;
public AccountControllerExtension(ApexPages.StandardController controller) {
this.acc = (Account)controller.getRecord();
}
public void updateIndustry() {
acc.Industry = 'Healthcare';
update acc;
}
}
Visualforce Page
<apex:page standardController="Account" extensions="AccountControllerExtension">
<h1>Account Details</h1>
<p>Account Name: {!Account.Name}</p>
<p>Industry: {!Account.Industry}</p>
<apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
Update Industry
বাটন ক্লিক করলে Industry
ফিল্ড আপডেট হবে এবং তা Visualforce পেজে রিফ্রেশ হবে।Visualforce Component এবং Apex Controller ব্যবহার করে পুনর্ব্যবহারযোগ্য কম্পোনেন্ট তৈরি করা যায়, যা কোড রিইউজ এবং ইন্টিগ্রেশন সহজ করে।
Component Definition (AccountComponent)
<apex:component controller="AccountComponentController">
<apex:attribute name="accountId" type="Id" description="Account Id"/>
<apex:outputText value="Account Name: {!account.Name}"/>
<apex:outputText value="Industry: {!account.Industry}"/>
</apex:component>
Component Controller (AccountComponentController)
public class AccountComponentController {
public Account account { get; set; }
public AccountComponentController() {
account = [SELECT Id, Name, Industry FROM Account LIMIT 1];
}
}
Apex এবং Visualforce Integration Salesforce-এ Apex এর ব্যাকএন্ড লজিক এবং Visualforce এর ফ্রন্টএন্ড ইন্টারফেস সংযুক্ত করে কার্যক্ষম এবং ইন্টারেক্টিভ ইউজার ইন্টারফেস তৈরি করতে ব্যবহৃত হয়। Standard Controller, Custom Controller, এবং Controller Extension ব্যবহার করে বিভিন্ন লজিক্যাল কার্যক্রম সম্পন্ন করা যায়। Governor Limits মেনে কোড অপ্টিমাইজ করা, Test Coverage নিশ্চিত করা, এবং Responsive Design তৈরি করার মাধ্যমে একটি উন্নত ইউজার এক্সপেরিয়েন্স নিশ্চিত করা সম্ভব।
Visualforce Page এবং Apex Controller Salesforce-এ একসাথে কাজ করে একটি কাস্টমাইজড এবং ইন্টারেক্টিভ ইউজার ইন্টারফেস (UI) তৈরি করতে সহায়তা করে। Visualforce Page হলো ফ্রন্ট-এন্ড বা ব্যবহারকারীর দৃষ্টিতে দৃশ্যমান অংশ, যেখানে Apex Controller হলো ব্যাক-এন্ড লজিক যা UI-তে ডেটা এবং কার্যক্রম পরিচালনা করে। Visualforce Page এবং Apex Controller একসাথে কাজ করে Salesforce অ্যাপ্লিকেশনকে আরও কার্যকর এবং ব্যবহারকারীর জন্য উপযোগী করে।
Visualforce Page এবং Apex Controller এর মধ্যে সম্পর্ক হলো MVC (Model-View-Controller) আর্কিটেকচারের ভিত্তিতে তৈরি। Visualforce Page হল View, যা ব্যবহারকারীর জন্য UI তৈরি করে। Apex Controller হল Controller, যা ডেটা এবং ব্যবসায়িক লজিক পরিচালনা করে।
নিচে একটি সাধারণ উদাহরণ দেয়া হলো যেখানে Visualforce Page এবং Apex Controller একসাথে কাজ করেছে। এই উদাহরণে একটি Account
রেকর্ডের তথ্য UI-তে প্রদর্শন এবং আপডেট করা হয়েছে।
public class AccountController {
public Account account { get; set; }
public AccountController() {
// ডেটা ইনিশিয়ালাইজেশন
account = [SELECT Id, Name, Industry FROM Account LIMIT 1];
}
// Account নাম আপডেট করা মেথড
public void updateAccountName() {
update account;
}
}
Account
অবজেক্টের ডেটা পরিচালনা করে এবং Visualforce Page-এ ডেটা পাঠায়।Account
রেকর্ডের নাম আপডেট করে।<apex:page controller="AccountController">
<h1>Account Details</h1>
<apex:form>
<apex:pageBlock title="Update Account Information">
<apex:pageBlockSection>
<apex:outputLabel value="Account Name"/>
<apex:inputField value="{!account.Name}"/>
<apex:outputLabel value="Industry"/>
<apex:inputField value="{!account.Industry}"/>
</apex:pageBlockSection>
<apex:commandButton value="Update" action="{!updateAccountName}" rerender=""/>
</apex:pageBlock>
</apex:form>
</apex:page>
AccountController
Controller সংযুক্ত করা হয়েছে।Account
রেকর্ডের ফিল্ডগুলোকে UI-তে ইনপুট ফিল্ডের মাধ্যমে প্রদর্শন ও সম্পাদনা করা হয়েছে।Update
বোতামটি updateAccountName
মেথড কল করে Account
রেকর্ডের তথ্য আপডেট করে।Data Binding: Visualforce Page-এর {!variable}
ব্যবহার করে Controller-এর ডেটা UI-তে ডায়নামিকভাবে দেখানো যায় এবং UI থেকে ডেটা Controller-এ পাঠানো যায়।
Action Methods: Controller এর মধ্যে বিভিন্ন মেথড যেমন update
, save
, delete
তৈরি করা যায়, যা Visualforce Page-এর মাধ্যমে ব্যবহারকারীর কার্যক্রমে প্রতিক্রিয়া জানায়।
SOQL এবং DML Integration: Controller এর মাধ্যমে SOQL Query এবং DML Operation ব্যবহার করে Visualforce Page-এ ডেটা দেখানো এবং পরিবর্তন করা যায়।
Custom Validation Logic: Controller-এ কাস্টম ভ্যালিডেশন লজিক যুক্ত করে Visualforce Page-এর মাধ্যমে ডেটা ভ্যালিডেশন করা যায়।
ডাইনামিক এবং ইন্টারেক্টিভ UI তৈরি: Visualforce Page এবং Apex Controller ব্যবহার করে ব্যবহারকারীর জন্য ডাইনামিক এবং ইন্টারেক্টিভ UI তৈরি করা যায়।
ব্যবসায়িক লজিক এবং ডেটা ম্যানেজমেন্ট: Controller ডেটা ম্যানেজমেন্ট এবং ব্যবসায়িক লজিক পরিচালনা করে, যা অ্যাপ্লিকেশনের কার্যক্ষমতা উন্নত করে।
কোড পুনঃব্যবহারযোগ্যতা: একবার তৈরি করা Apex Controller অন্যান্য Visualforce Page-এ ব্যবহার করা যায়, যা কোড পুনঃব্যবহারযোগ্যতা নিশ্চিত করে।
MVC আর্কিটেকচার অনুসরণ: Visualforce Page এবং Apex Controller, MVC আর্কিটেকচারের ভিত্তিতে গড়ে ওঠে, যা অ্যাপ্লিকেশন পরিচালনা ও নিয়ন্ত্রণকে সহজ ও কার্যকর করে।
Action Methods সঠিকভাবে ব্যবহার করুন: শুধুমাত্র প্রয়োজনীয় ফাংশন তৈরি করুন এবং Visualforce Page থেকে Controller-এর Action মেথড কল করুন।
Governor Limits মেনে চলুন: SOQL এবং DML Operations Controller-এ ব্যবহার করার সময় Salesforce-এর গভর্নর লিমিট মেনে চলুন।
Exception Handling: Controller-এ Exception Handling যুক্ত করে নিশ্চিত করুন যাতে কোনো ত্রুটি ঘটলে তা ব্যবহারকারীর কাছে উপযুক্ত বার্তা প্রদান করতে পারে।
Test Coverage: Controller-এ যুক্ত লজিক ও কার্যক্রমের জন্য যথাযথ Unit Test তৈরি করুন এবং ৭৫% কভারেজ নিশ্চিত করুন।
Visualforce Page এবং Apex Controller একসাথে কাজ করে Salesforce-এ ইন্টারেক্টিভ UI এবং ডেটা ম্যানেজমেন্ট নিশ্চিত করে। Visualforce Page UI-এর মাধ্যমে ব্যবহারকারীর জন্য কাস্টমাইজড ইন্টারফেস তৈরি করে, যেখানে Apex Controller ডেটা এবং ব্যবসায়িক লজিক পরিচালনা করে। MVC আর্কিটেকচার অনুসরণ করে Visualforce Page এবং Apex Controller অ্যাপ্লিকেশনের কার্যক্ষমতা, স্থায়িত্ব এবং পুনঃব্যবহারযোগ্যতা নিশ্চিত করে, যা উন্নত ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।
Custom Controller এবং Controller Extension Salesforce-এ Visualforce পেজের সাথে Apex ক্লাসের মাধ্যমে কাস্টম লজিক এবং ডেটা প্রসেসিং সংযুক্ত করার দুটি পদ্ধতি। Custom Controller ব্যবহার করে সম্পূর্ণ নতুন Controller তৈরি করা হয়, যেখানে Controller Extension-এর মাধ্যমে একটি স্ট্যান্ডার্ড বা Custom Controller-এ নতুন কার্যক্ষমতা যোগ করা যায়। এই দুটি পদ্ধতির মাধ্যমে Apex কোডের জটিল লজিক Visualforce পেজে প্রয়োগ করা সহজ হয়।
Custom Controller হলো এমন একটি Apex ক্লাস, যা Visualforce পেজের জন্য কাস্টম লজিক প্রদান করে। Custom Controller সাধারণত যখন স্ট্যান্ডার্ড অবজেক্টের উপর নির্ভরশীল নয়, বরং এককভাবে কাস্টম লজিক প্রয়োগ করতে হয়, তখন ব্যবহার করা হয়।
Apex Class (Custom Controller)
public class AccountController {
public Account acc { get; set; }
public AccountController() {
acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
}
public void updateIndustry() {
acc.Industry = 'Technology';
update acc;
}
}
Visualforce Page
<apex:page controller="AccountController">
<h1>Account Details</h1>
<p>Account Name: {!acc.Name}</p>
<p>Industry: {!acc.Industry}</p>
<apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
AccountController
Apex ক্লাস ব্যবহৃত হয়েছে।Update Industry
বাটন ক্লিক করলে Industry
ফিল্ড Technology
হিসেবে আপডেট হবে এবং Visualforce পেজে তা দেখাবে।Controller Extension হলো একটি Apex ক্লাস, যা একটি স্ট্যান্ডার্ড বা Custom Controller-এর সাথে যুক্ত করা হয় এবং অতিরিক্ত কার্যক্ষমতা প্রদান করে। এটি মূল Controller-এর কার্যক্ষমতা পরিবর্তন না করে নতুন লজিক যোগ করার জন্য ব্যবহৃত হয়।
Apex Class (Controller Extension)
public class AccountControllerExtension {
private final Account acc;
public AccountControllerExtension(ApexPages.StandardController controller) {
this.acc = (Account)controller.getRecord();
}
public void updateIndustry() {
acc.Industry = 'Healthcare';
update acc;
}
}
Visualforce Page
<apex:page standardController="Account" extensions="AccountControllerExtension">
<h1>Account Details</h1>
<p>Account Name: {!Account.Name}</p>
<p>Industry: {!Account.Industry}</p>
<apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
AccountControllerExtension
Apex ক্লাস যুক্ত করা হয়েছে।Update Industry
বাটন ক্লিক করলে Industry
ফিল্ড Healthcare
হিসেবে আপডেট হবে।বৈশিষ্ট্য | Custom Controller | Controller Extension |
---|---|---|
প্রধান উদ্দেশ্য | সম্পূর্ণ নতুন Controller তৈরি করা | বিদ্যমান Controller-এর কার্যক্ষমতা বৃদ্ধি |
স্ট্যান্ডার্ড কন্ট্রোলার | ব্যবহৃত হয় না | স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের সাথে যুক্ত |
ডেটা প্রসেসিং | সম্পূর্ণ নতুন ডেটা প্রসেসিং যুক্ত করা হয় | মূল Controller-এর ডেটা প্রসেসিং বাড়ানো |
লজিক সংযোজন | স্বতন্ত্র কাস্টম লজিক | স্ট্যান্ডার্ড বা কাস্টম লজিকের উপর ভিত্তি করে |
ব্যবহার ক্ষেত্র | স্বাধীনভাবে কাজ করতে ব্যবহৃত | স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের ফিচার বৃদ্ধি |
try-catch
ব্লক ব্যবহার করুন।public class AccountController {
public Account acc { get; set; }
public AccountController() {
acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
}
public void updateIndustry() {
acc.Industry = 'Technology';
update acc;
}
}
public class AccountControllerExtension {
private final Account acc;
public AccountControllerExtension(ApexPages.StandardController controller) {
this.acc = (Account)controller.getRecord();
}
public void updateIndustry() {
acc.Industry = 'Healthcare';
update acc;
}
}
@isTest
public class AccountControllerTest {
@isTest
static void testCustomController() {
Account acc = new Account(Name = 'Test Account');
insert acc;
AccountController controller = new AccountController();
controller.updateIndustry();
Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
System.assertEquals('Technology', updatedAcc.Industry);
}
@isTest
static void testControllerExtension() {
Account acc = new Account(Name = 'Test Account');
insert acc;
ApexPages.StandardController stdController = new ApexPages.StandardController(acc);
AccountControllerExtension extension = new AccountControllerExtension(stdController);
extension.updateIndustry();
Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
System.assertEquals('Healthcare', updatedAcc.Industry);
}
}
updateIndustry()
মেথড সঠিকভাবে কাজ করছে কি না যাচাই করা হয়েছে।Custom Controller এবং Controller Extension Visualforce পেজের জন্য Apex লজিক সংযুক্ত করার দুটি পদ্ধতি। Custom Controller সম্পূর্ণ নতুন লজিক প্রদান করে, যেখানে Controller Extension মূল Controller-এর কার্যক্ষমতা বাড়ায়। টেস্ট ক্লাস ও সঠিক অপ্টিমাইজেশন নিশ্চিত করে এই দুটি পদ্ধতির মাধ্যমে Salesforce-এ কার্যকরী ও উন্নত ইউজার ইন্টারফেস তৈরি করা যায়।
Visualforce Components এবং Apex Integration Salesforce-এ Visualforce Page এবং Apex Controller-এর মাধ্যমে ইন্টারঅ্যাক্টিভ এবং কার্যক্ষম ব্যবহারকারীর ইন্টারফেস (UI) তৈরি করতে সহায়ক। Visualforce Components Visualforce Page-এ ব্যবহৃত পুনঃব্যবহারযোগ্য এলিমেন্ট, যেখানে Apex Integration বিভিন্ন অ্যাপ্লিকেশন বা পরিষেবার মধ্যে সংযোগ স্থাপন করে ডেটা আদান-প্রদান করতে সহায়তা করে।
Visualforce Components হলো Visualforce Page-এ ব্যবহৃত ছোট ছোট, পুনঃব্যবহারযোগ্য UI এলিমেন্ট, যা Visualforce Markup ব্যবহার করে তৈরি করা হয়। এগুলো HTML এবং CSS এর সাথে একত্রে ব্যবহার করা যায় এবং Salesforce-এর মধ্যে বিভিন্ন কার্যক্রমে ব্যবহৃত হয়। Visualforce Components ব্যবহার করে একটি কাস্টম এবং ডাইনামিক UI তৈরি করা সহজ হয়।
<apex:form>
, <apex:commandButton>
, <apex:inputField>
, ইত্যাদি।নিচে Visualforce Components ব্যবহার করে একটি সাধারণ ফর্ম তৈরি করা হয়েছে, যা ব্যবহারকারীর ইনপুট গ্রহণ করে এবং saveAccount
মেথড কল করে।
<apex:page controller="AccountController">
<apex:form>
<apex:pageBlock title="Account Information">
<apex:pageBlockSection>
<apex:outputLabel value="Account Name"/>
<apex:inputField value="{!account.Name}"/>
<apex:outputLabel value="Industry"/>
<apex:inputField value="{!account.Industry}"/>
</apex:pageBlockSection>
<apex:commandButton value="Save" action="{!saveAccount}" rerender=""/>
</apex:pageBlock>
</apex:form>
</apex:page>
saveAccount
মেথড কল করে।Apex Integration Salesforce প্ল্যাটফর্মে বিভিন্ন এক্সটার্নাল সার্ভার বা অ্যাপ্লিকেশনের সাথে সংযোগ স্থাপন করতে সহায়ক। Salesforce-এর Apex Integration সাধারণত REST API, SOAP API, HTTP Callouts ইত্যাদি মাধ্যমে সম্পন্ন হয়, যা Salesforce এবং অন্যান্য সিস্টেমের মধ্যে ডেটা আদান-প্রদানে সহায়ক।
নিচের উদাহরণে, Apex ক্লাসে একটি HTTP GET কল আউট করা হয়েছে, যা বাহ্যিক সার্ভার থেকে ডেটা সংগ্রহ করে এবং JSON রেসপন্স পায়।
public class IntegrationExample {
public void getDataFromExternalService() {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.example.com/data');
request.setMethod('GET');
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
String jsonResponse = response.getBody();
System.debug('Response: ' + jsonResponse);
} else {
System.debug('Error: ' + response.getStatusCode());
}
}
}
GET
নির্ধারণ করে।Visualforce Components এবং Apex Integration একত্রে কাজ করে Salesforce অ্যাপ্লিকেশনে একটি সমন্বিত ও কার্যক্ষম ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।
Visualforce Components এবং Apex Integration ব্যবহার করে Salesforce-এ একটি শক্তিশালী, ইন্টারেক্টিভ এবং কার্যক্ষম অ্যাপ্লিকেশন তৈরি করা যায়, যা ব্যবহারকারীর জন্য উন্নত অভিজ্ঞতা প্রদান করে।
Visualforce পেজে SOQL এবং DML ব্যবহার হলো Apex ক্লাসের মাধ্যমে Salesforce ডেটাবেস থেকে ডেটা পুনরুদ্ধার এবং পরিবর্তন করার পদ্ধতি। Visualforce পেজে SOQL এবং DML ব্যবহার করা হয় Apex ক্লাসের মধ্যে, যা ডেটা ফিল্টারিং, ফিল্ড আপডেট, নতুন রেকর্ড তৈরি, অথবা রেকর্ড মুছে ফেলার জন্য সহায়ক। তবে এটি করতে গিয়ে গভর্নর লিমিট মেনে চলা গুরুত্বপূর্ণ, যাতে কোডের কার্যকারিতা ও স্থায়িত্ব বজায় থাকে।
Visualforce পেজে SOQL এবং DML সরাসরি ব্যবহার করা হয় না; বরং একটি Custom Controller বা Controller Extension-এর মাধ্যমে SOQL এবং DML অপারেশন করা হয়। SOQL ব্যবহার করে ডেটাবেস থেকে ডেটা ফিল্টার করা হয়, এবং DML অপারেশন ব্যবহার করে সেই ডেটায় পরিবর্তন আনা হয়।
SOQL ব্যবহার করে ডেটাবেস থেকে ডেটা পুনরুদ্ধার করা যায় এবং Visualforce পেজে তা প্রদর্শন করা হয়। SOQL ব্যবহার করে সাধারণত কাস্টম লজিকের মাধ্যমে ডেটা ফিল্টার করা হয়।
Apex Class (Custom Controller)
public class AccountController {
public List<Account> accountList { get; set; }
public AccountController() {
accountList = [SELECT Id, Name, Industry FROM Account LIMIT 10];
}
}
Visualforce Page
<apex:page controller="AccountController">
<h1>Account List</h1>
<apex:pageBlock title="Accounts">
<apex:pageBlockTable value="{!accountList}" var="acc">
<apex:column value="{!acc.Name}" headerValue="Account Name"/>
<apex:column value="{!acc.Industry}" headerValue="Industry"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:page>
accountList
ফিল্ডে SOQL ব্যবহার করে Account রেকর্ডগুলো পুনরুদ্ধার করা হয়েছে।apex:pageBlockTable
ব্যবহার করা হয়েছে।DML অপারেশন ব্যবহার করে Visualforce পেজে ডেটা আপডেট, নতুন রেকর্ড তৈরি বা মুছে ফেলা যায়। সাধারণত commandButton
বা commandLink
এর মাধ্যমে DML অপারেশন ট্রিগার করা হয়।
Apex Class (Custom Controller)
public class AccountController {
public Account acc { get; set; }
public AccountController() {
acc = new Account();
}
public void saveAccount() {
insert acc;
}
}
Visualforce Page
<apex:page controller="AccountController">
<h1>Create New Account</h1>
<apex:form>
<apex:inputField value="{!acc.Name}" label="Account Name"/>
<apex:inputField value="{!acc.Industry}" label="Industry"/>
<apex:commandButton value="Save Account" action="{!saveAccount}" rerender="confirmationMessage"/>
<apex:outputPanel id="confirmationMessage">
<apex:outputText value="Account has been saved successfully!" rendered="{!NOT(ISNULL(acc.Id))}"/>
</apex:outputPanel>
</apex:form>
</apex:page>
saveAccount
মেথড ব্যবহার করে DML insert
অপারেশন করা হয়েছে, যা নতুন Account রেকর্ড তৈরি করে।commandButton
ব্যবহার করে saveAccount
মেথড কল করা হয়েছে, যা রেকর্ড সেভ করবে এবং সফল হলে একটি কনফার্মেশন মেসেজ প্রদর্শন করবে।LIMIT
ব্যবহার করুন।public class AccountController {
public List<Account> accountList { get; set; }
public Account acc { get; set; }
public AccountController() {
accountList = [SELECT Id, Name, Industry FROM Account LIMIT 10];
acc = new Account();
}
public void saveAccount() {
insert acc;
}
}
<apex:page controller="AccountController">
<h1>Account List and Creation</h1>
<apex:pageBlock title="Create New Account">
<apex:form>
<apex:inputField value="{!acc.Name}" label="Account Name"/>
<apex:inputField value="{!acc.Industry}" label="Industry"/>
<apex:commandButton value="Save Account" action="{!saveAccount}" rerender="confirmation"/>
<apex:outputPanel id="confirmation">
<apex:outputText value="Account saved!" rendered="{!NOT(ISNULL(acc.Id))}"/>
</apex:outputPanel>
</apex:form>
</apex:pageBlock>
<apex:pageBlock title="Account List">
<apex:pageBlockTable value="{!accountList}" var="acc">
<apex:column value="{!acc.Name}" headerValue="Account Name"/>
<apex:column value="{!acc.Industry}" headerValue="Industry"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:page>
@isTest
public class AccountControllerTest {
@isTest
static void testSOQLQuery() {
Account acc1 = new Account(Name = 'Test Account 1', Industry = 'Technology');
insert acc1;
AccountController controller = new AccountController();
System.assertNotEquals(0, controller.accountList.size(), 'Account list should not be empty');
}
@isTest
static void testDMLInsert() {
AccountController controller = new AccountController();
controller.acc.Name = 'Test Account 2';
controller.acc.Industry = 'Healthcare';
Test.startTest();
controller.saveAccount();
Test.stopTest();
Account insertedAcc = [SELECT Id, Name, Industry FROM Account WHERE Id = :controller.acc.Id];
System.assertEquals('Test Account 2', insertedAcc.Name, 'Account name should match');
System.assertEquals('Healthcare', insertedAcc.Industry, 'Industry should match');
}
}
accountList
এর জন্য টেস্ট ক্লাস তৈরি করা হয়েছে।insert
অপারেশন টেস্ট করার জন্য টেস্ট মেথড তৈরি করা হয়েছে, যা নতুন Account রেকর্ড তৈরি এবং ভ্যালিডেশন করে।Visualforce পেজে SOQL এবং DML ব্যবহার করে ডেটাবেস থেকে ডেটা পুনরুদ্ধার ও পরিবর্তন করার মাধ্যমে Apex কোডের কার্যক্ষমতা এবং ডেটা প্রক্রিয়াকরণ সক্ষমতা বৃদ্ধি করা যায়। Custom Controller এবং Controller Extension ব্যবহার করে SOQL ও DML অপারেশন প্রয়োগ করতে হলে গভর্নর লিমিট মেনে চলা, টেস্ট ক্লাস ও টেস্ট ডেটা তৈরি করা এবং সঠিক Exception Handling নিশ্চিত করা গুরুত্বপূর্ণ।
common.read_more